package org.openarchitectureware.recipe2.dsl.contentassist.antlr.internal; 

import java.io.InputStream;
import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.xtext.parsetree.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.ui.common.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
import org.openarchitectureware.recipe2.dsl.services.DetectorGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

public class InternalDetectorParser extends AbstractInternalContentAssistParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'plugin'", "'detector'", "'{'", "'}'", "'message'", "'param'", "':'"
    };
    public static final int RULE_ID=4;
    public static final int RULE_STRING=5;
    public static final int RULE_ANY_OTHER=10;
    public static final int RULE_INT=6;
    public static final int RULE_WS=9;
    public static final int RULE_SL_COMMENT=8;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=7;

        public InternalDetectorParser(TokenStream input) {
            super(input);
        }
        

    public String[] getTokenNames() { return tokenNames; }
    public String getGrammarFileName() { return "../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g"; }


     
     	private DetectorGrammarAccess grammarAccess;
     	
        public void setGrammarAccess(DetectorGrammarAccess grammarAccess) {
        	this.grammarAccess = grammarAccess;
        }
        
        @Override
        protected Grammar getGrammar() {
        	return grammarAccess.getGrammar();
        }




    // $ANTLR start entryRuleRecipeDetectorModel
    // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:55:1: entryRuleRecipeDetectorModel : ruleRecipeDetectorModel EOF ;
    public final void entryRuleRecipeDetectorModel() throws RecognitionException {
        try {
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:55:30: ( ruleRecipeDetectorModel EOF )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:56:1: ruleRecipeDetectorModel EOF
            {
             before(grammarAccess.getRecipeDetectorModelRule()); 
            pushFollow(FOLLOW_ruleRecipeDetectorModel_in_entryRuleRecipeDetectorModel60);
            ruleRecipeDetectorModel();
            _fsp--;

             after(grammarAccess.getRecipeDetectorModelRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRecipeDetectorModel67); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end entryRuleRecipeDetectorModel


    // $ANTLR start ruleRecipeDetectorModel
    // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:63:1: ruleRecipeDetectorModel : ( ( rule__RecipeDetectorModel__Group ) ) ;
    public final void ruleRecipeDetectorModel() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:67:2: ( ( ( rule__RecipeDetectorModel__Group ) ) )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:68:1: ( ( rule__RecipeDetectorModel__Group ) )
            {
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:68:1: ( ( rule__RecipeDetectorModel__Group ) )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:69:1: ( rule__RecipeDetectorModel__Group )
            {
             before(grammarAccess.getRecipeDetectorModelAccess().getGroup()); 
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:70:1: ( rule__RecipeDetectorModel__Group )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:70:2: rule__RecipeDetectorModel__Group
            {
            pushFollow(FOLLOW_rule__RecipeDetectorModel__Group_in_ruleRecipeDetectorModel94);
            rule__RecipeDetectorModel__Group();
            _fsp--;


            }

             after(grammarAccess.getRecipeDetectorModelAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end ruleRecipeDetectorModel


    // $ANTLR start entryRuleDetector
    // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:81:1: entryRuleDetector : ruleDetector EOF ;
    public final void entryRuleDetector() throws RecognitionException {
        try {
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:81:19: ( ruleDetector EOF )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:82:1: ruleDetector EOF
            {
             before(grammarAccess.getDetectorRule()); 
            pushFollow(FOLLOW_ruleDetector_in_entryRuleDetector119);
            ruleDetector();
            _fsp--;

             after(grammarAccess.getDetectorRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDetector126); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end entryRuleDetector


    // $ANTLR start ruleDetector
    // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:89:1: ruleDetector : ( ( rule__Detector__Group ) ) ;
    public final void ruleDetector() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:93:2: ( ( ( rule__Detector__Group ) ) )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:94:1: ( ( rule__Detector__Group ) )
            {
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:94:1: ( ( rule__Detector__Group ) )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:95:1: ( rule__Detector__Group )
            {
             before(grammarAccess.getDetectorAccess().getGroup()); 
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:96:1: ( rule__Detector__Group )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:96:2: rule__Detector__Group
            {
            pushFollow(FOLLOW_rule__Detector__Group_in_ruleDetector153);
            rule__Detector__Group();
            _fsp--;


            }

             after(grammarAccess.getDetectorAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end ruleDetector


    // $ANTLR start entryRuleParameter
    // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:107:1: entryRuleParameter : ruleParameter EOF ;
    public final void entryRuleParameter() throws RecognitionException {
        try {
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:107:20: ( ruleParameter EOF )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:108:1: ruleParameter EOF
            {
             before(grammarAccess.getParameterRule()); 
            pushFollow(FOLLOW_ruleParameter_in_entryRuleParameter178);
            ruleParameter();
            _fsp--;

             after(grammarAccess.getParameterRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleParameter185); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end entryRuleParameter


    // $ANTLR start ruleParameter
    // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:115:1: ruleParameter : ( ( rule__Parameter__Group ) ) ;
    public final void ruleParameter() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:119:2: ( ( ( rule__Parameter__Group ) ) )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:120:1: ( ( rule__Parameter__Group ) )
            {
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:120:1: ( ( rule__Parameter__Group ) )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:121:1: ( rule__Parameter__Group )
            {
             before(grammarAccess.getParameterAccess().getGroup()); 
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:122:1: ( rule__Parameter__Group )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:122:2: rule__Parameter__Group
            {
            pushFollow(FOLLOW_rule__Parameter__Group_in_ruleParameter212);
            rule__Parameter__Group();
            _fsp--;


            }

             after(grammarAccess.getParameterAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end ruleParameter


    // $ANTLR start rule__RecipeDetectorModel__Group
    // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:134:1: rule__RecipeDetectorModel__Group : ( 'plugin' ) ( ( ( RULE_ID ) ) ) ( ( ( ruleDetector ) )* ) ;
    public final void rule__RecipeDetectorModel__Group() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:138:1: ( ( 'plugin' ) ( ( ( RULE_ID ) ) ) ( ( ( ruleDetector ) )* ) )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:139:1: ( 'plugin' ) ( ( ( RULE_ID ) ) ) ( ( ( ruleDetector ) )* )
            {
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:139:1: ( 'plugin' )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:140:1: 'plugin'
            {
             before(grammarAccess.getRecipeDetectorModelAccess().getPluginKeyword_0()); 
            match(input,11,FOLLOW_11_in_rule__RecipeDetectorModel__Group249); 
             after(grammarAccess.getRecipeDetectorModelAccess().getPluginKeyword_0()); 

            }

            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:145:1: ( ( ( RULE_ID ) ) )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:146:1: ( ( RULE_ID ) )
            {
             before(grammarAccess.getRecipeDetectorModelAccess().getNameAssignment_1()); 
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:147:1: ( ( RULE_ID ) )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:148:1: ( RULE_ID )
            {
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:148:1: ( RULE_ID )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:149:1: RULE_ID
            {
             before(grammarAccess.getRecipeDetectorModelAccess().getNameIDTerminalRuleCall_1_0()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__RecipeDetectorModel__Group268); 
             after(grammarAccess.getRecipeDetectorModelAccess().getNameIDTerminalRuleCall_1_0()); 

            }


            }

             after(grammarAccess.getRecipeDetectorModelAccess().getNameAssignment_1()); 

            }

            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:155:1: ( ( ( ruleDetector ) )* )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:156:1: ( ( ruleDetector ) )*
            {
             before(grammarAccess.getRecipeDetectorModelAccess().getBugDetectorsAssignment_2()); 
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:157:1: ( ( ruleDetector ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==12) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:158:1: ( ruleDetector )
            	    {
            	    // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:158:1: ( ruleDetector )
            	    // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:159:1: ruleDetector
            	    {
            	     before(grammarAccess.getRecipeDetectorModelAccess().getBugDetectorsDetectorParserRuleCall_2_0()); 
            	    pushFollow(FOLLOW_ruleDetector_in_rule__RecipeDetectorModel__Group292);
            	    ruleDetector();
            	    _fsp--;

            	     after(grammarAccess.getRecipeDetectorModelAccess().getBugDetectorsDetectorParserRuleCall_2_0()); 

            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);

             after(grammarAccess.getRecipeDetectorModelAccess().getBugDetectorsAssignment_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end rule__RecipeDetectorModel__Group


    // $ANTLR start rule__Detector__Group
    // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:171:1: rule__Detector__Group : ( 'detector' ) ( ( ( RULE_STRING ) ) ) ( '{' ) ( ( rule__Detector__Group_3 )? ) ( ( ( ruleParameter ) )* ) ( '}' ) ;
    public final void rule__Detector__Group() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:175:1: ( ( 'detector' ) ( ( ( RULE_STRING ) ) ) ( '{' ) ( ( rule__Detector__Group_3 )? ) ( ( ( ruleParameter ) )* ) ( '}' ) )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:176:1: ( 'detector' ) ( ( ( RULE_STRING ) ) ) ( '{' ) ( ( rule__Detector__Group_3 )? ) ( ( ( ruleParameter ) )* ) ( '}' )
            {
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:176:1: ( 'detector' )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:177:1: 'detector'
            {
             before(grammarAccess.getDetectorAccess().getDetectorKeyword_0()); 
            match(input,12,FOLLOW_12_in_rule__Detector__Group332); 
             after(grammarAccess.getDetectorAccess().getDetectorKeyword_0()); 

            }

            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:182:1: ( ( ( RULE_STRING ) ) )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:183:1: ( ( RULE_STRING ) )
            {
             before(grammarAccess.getDetectorAccess().getPredefAssignment_1()); 
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:184:1: ( ( RULE_STRING ) )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:185:1: ( RULE_STRING )
            {
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:185:1: ( RULE_STRING )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:186:1: RULE_STRING
            {
             before(grammarAccess.getDetectorAccess().getPredefSTRINGTerminalRuleCall_1_0()); 
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rule__Detector__Group351); 
             after(grammarAccess.getDetectorAccess().getPredefSTRINGTerminalRuleCall_1_0()); 

            }


            }

             after(grammarAccess.getDetectorAccess().getPredefAssignment_1()); 

            }

            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:192:1: ( '{' )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:193:1: '{'
            {
             before(grammarAccess.getDetectorAccess().getLeftCurlyBracketKeyword_2()); 
            match(input,13,FOLLOW_13_in_rule__Detector__Group369); 
             after(grammarAccess.getDetectorAccess().getLeftCurlyBracketKeyword_2()); 

            }

            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:198:1: ( ( rule__Detector__Group_3 )? )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:199:1: ( rule__Detector__Group_3 )?
            {
             before(grammarAccess.getDetectorAccess().getGroup_3()); 
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:200:1: ( rule__Detector__Group_3 )?
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0==15) ) {
                alt2=1;
            }
            switch (alt2) {
                case 1 :
                    // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:200:2: rule__Detector__Group_3
                    {
                    pushFollow(FOLLOW_rule__Detector__Group_3_in_rule__Detector__Group381);
                    rule__Detector__Group_3();
                    _fsp--;


                    }
                    break;

            }

             after(grammarAccess.getDetectorAccess().getGroup_3()); 

            }

            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:202:1: ( ( ( ruleParameter ) )* )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:203:1: ( ( ruleParameter ) )*
            {
             before(grammarAccess.getDetectorAccess().getParametersAssignment_4()); 
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:204:1: ( ( ruleParameter ) )*
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==16) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:205:1: ( ruleParameter )
            	    {
            	    // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:205:1: ( ruleParameter )
            	    // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:206:1: ruleParameter
            	    {
            	     before(grammarAccess.getDetectorAccess().getParametersParameterParserRuleCall_4_0()); 
            	    pushFollow(FOLLOW_ruleParameter_in_rule__Detector__Group400);
            	    ruleParameter();
            	    _fsp--;

            	     after(grammarAccess.getDetectorAccess().getParametersParameterParserRuleCall_4_0()); 

            	    }


            	    }
            	    break;

            	default :
            	    break loop3;
                }
            } while (true);

             after(grammarAccess.getDetectorAccess().getParametersAssignment_4()); 

            }

            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:212:1: ( '}' )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:213:1: '}'
            {
             before(grammarAccess.getDetectorAccess().getRightCurlyBracketKeyword_5()); 
            match(input,14,FOLLOW_14_in_rule__Detector__Group419); 
             after(grammarAccess.getDetectorAccess().getRightCurlyBracketKeyword_5()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end rule__Detector__Group


    // $ANTLR start rule__Detector__Group_3
    // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:224:1: rule__Detector__Group_3 : ( 'message' ) ( ( ( RULE_STRING ) ) ) ;
    public final void rule__Detector__Group_3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:228:1: ( ( 'message' ) ( ( ( RULE_STRING ) ) ) )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:229:1: ( 'message' ) ( ( ( RULE_STRING ) ) )
            {
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:229:1: ( 'message' )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:230:1: 'message'
            {
             before(grammarAccess.getDetectorAccess().getMessageKeyword_3_0()); 
            match(input,15,FOLLOW_15_in_rule__Detector__Group_3453); 
             after(grammarAccess.getDetectorAccess().getMessageKeyword_3_0()); 

            }

            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:235:1: ( ( ( RULE_STRING ) ) )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:236:1: ( ( RULE_STRING ) )
            {
             before(grammarAccess.getDetectorAccess().getMessageAssignment_3_1()); 
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:237:1: ( ( RULE_STRING ) )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:238:1: ( RULE_STRING )
            {
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:238:1: ( RULE_STRING )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:239:1: RULE_STRING
            {
             before(grammarAccess.getDetectorAccess().getMessageSTRINGTerminalRuleCall_3_1_0()); 
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rule__Detector__Group_3472); 
             after(grammarAccess.getDetectorAccess().getMessageSTRINGTerminalRuleCall_3_1_0()); 

            }


            }

             after(grammarAccess.getDetectorAccess().getMessageAssignment_3_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end rule__Detector__Group_3


    // $ANTLR start rule__Parameter__Group
    // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:251:1: rule__Parameter__Group : ( 'param' ) ( ( ( RULE_ID ) ) ) ( ':' ) ( ( ( RULE_STRING ) ) ) ;
    public final void rule__Parameter__Group() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:255:1: ( ( 'param' ) ( ( ( RULE_ID ) ) ) ( ':' ) ( ( ( RULE_STRING ) ) ) )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:256:1: ( 'param' ) ( ( ( RULE_ID ) ) ) ( ':' ) ( ( ( RULE_STRING ) ) )
            {
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:256:1: ( 'param' )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:257:1: 'param'
            {
             before(grammarAccess.getParameterAccess().getParamKeyword_0()); 
            match(input,16,FOLLOW_16_in_rule__Parameter__Group511); 
             after(grammarAccess.getParameterAccess().getParamKeyword_0()); 

            }

            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:262:1: ( ( ( RULE_ID ) ) )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:263:1: ( ( RULE_ID ) )
            {
             before(grammarAccess.getParameterAccess().getNameAssignment_1()); 
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:264:1: ( ( RULE_ID ) )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:265:1: ( RULE_ID )
            {
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:265:1: ( RULE_ID )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:266:1: RULE_ID
            {
             before(grammarAccess.getParameterAccess().getNameIDTerminalRuleCall_1_0()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Parameter__Group530); 
             after(grammarAccess.getParameterAccess().getNameIDTerminalRuleCall_1_0()); 

            }


            }

             after(grammarAccess.getParameterAccess().getNameAssignment_1()); 

            }

            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:272:1: ( ':' )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:273:1: ':'
            {
             before(grammarAccess.getParameterAccess().getColonKeyword_2()); 
            match(input,17,FOLLOW_17_in_rule__Parameter__Group548); 
             after(grammarAccess.getParameterAccess().getColonKeyword_2()); 

            }

            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:278:1: ( ( ( RULE_STRING ) ) )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:279:1: ( ( RULE_STRING ) )
            {
             before(grammarAccess.getParameterAccess().getValueAssignment_3()); 
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:280:1: ( ( RULE_STRING ) )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:281:1: ( RULE_STRING )
            {
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:281:1: ( RULE_STRING )
            // ../org.openarchitectureware.recipe2.dsl.detector.ui/src-gen/org/openarchitectureware/recipe2/dsl/contentassist/antlr/internal/InternalDetector.g:282:1: RULE_STRING
            {
             before(grammarAccess.getParameterAccess().getValueSTRINGTerminalRuleCall_3_0()); 
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rule__Parameter__Group567); 
             after(grammarAccess.getParameterAccess().getValueSTRINGTerminalRuleCall_3_0()); 

            }


            }

             after(grammarAccess.getParameterAccess().getValueAssignment_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end rule__Parameter__Group


 

    public static final BitSet FOLLOW_ruleRecipeDetectorModel_in_entryRuleRecipeDetectorModel60 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRecipeDetectorModel67 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__RecipeDetectorModel__Group_in_ruleRecipeDetectorModel94 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDetector_in_entryRuleDetector119 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDetector126 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Detector__Group_in_ruleDetector153 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleParameter_in_entryRuleParameter178 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleParameter185 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Parameter__Group_in_ruleParameter212 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_rule__RecipeDetectorModel__Group249 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__RecipeDetectorModel__Group268 = new BitSet(new long[]{0x0000000000001002L});
    public static final BitSet FOLLOW_ruleDetector_in_rule__RecipeDetectorModel__Group292 = new BitSet(new long[]{0x0000000000001002L});
    public static final BitSet FOLLOW_12_in_rule__Detector__Group332 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_rule__Detector__Group351 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_rule__Detector__Group369 = new BitSet(new long[]{0x000000000001C000L});
    public static final BitSet FOLLOW_rule__Detector__Group_3_in_rule__Detector__Group381 = new BitSet(new long[]{0x0000000000014000L});
    public static final BitSet FOLLOW_ruleParameter_in_rule__Detector__Group400 = new BitSet(new long[]{0x0000000000014000L});
    public static final BitSet FOLLOW_14_in_rule__Detector__Group419 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_15_in_rule__Detector__Group_3453 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_rule__Detector__Group_3472 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_16_in_rule__Parameter__Group511 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__Parameter__Group530 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_rule__Parameter__Group548 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_rule__Parameter__Group567 = new BitSet(new long[]{0x0000000000000002L});

}